#ifndef ADDARTICLEOBJET_H
#define ADDARTICLEOBJET_H 1

#include "ADDItemObjet.h"

/**
 * Classe qui permet de construire un objet qui a un Nom et un
 * Prix. L'idée serait d'utiliser cette classe comme base pour les
 * classes représentant les compétences de classe, les capacités
 * raciales et les compétences diverses.
 *
 * @author Johan "Solo" Luisier
 */
class ADDArticleObjet : public ADDItemObjet
{
public:
    /** @brief Constructeur standard.
     *
     * Le constructeur standard initialise le Prix et délègue le reste à
     * ADDItemObjet.
     *
     * @param[in] typeObjet type de l'objet.
     * @param[in] nom nom de l'article.
     * @param[in] prix coût de l'objet.
     */
    ADDArticleObjet( const std::string& typeObjet,
                     const std::string& nom,
                     const unsigned& prix );
    /** @brief Constructeur de copie.
     *
     * Le constructeur de copie permet de dupliquer une instance de
     * ADDArticleObjet.
     *
     * @param[in] addObj instance à dupliquer.
     */
    ADDArticleObjet( const ADDArticleObjet& addObj );
    /** @brief Destructeur, ne fait rien de spécial.
     *
     * Le destructeur est déclaré \c virtual pour assurer une séquence de
     * destruction propre.
     */
    virtual ~ADDArticleObjet();
    /** @brief Opérateur d'affectation.
     *
     * L'opérateur d'affectation permet d'assigner une instance à l'instance
     * courante.
     *
     * @param[in] item instance de ADDArticleObjet à dupliquer.
     *
     * @return une référence sur l'instance courante.
     */
    ADDArticleObjet& operator=( const ADDArticleObjet& article );
    /** @brief Accesseur pour Prix.
     *
     * Cette méthode permet d'accéder à Prix.
     *
     * @return une référence constante sur Prix.
     */
    const unsigned& prix() const;
    /** @brief Mutateur pour Prix.
     *
     * Cette méthode permet de changer la valeur de Prix.
     *
     * @param[in] prix nouvelle valeur de Prix.
     */
    void setPrix( const unsigned& prix );
protected:
    /**
     * Prix de "l'article".
     */
    unsigned Prix;
};

#endif // ADDARTICLEOBJET_H
